The widespread proliferation of computers over the past decade has prompted the development of computer networks that allow computers to communicate with each other. With the introduction of the personal computer (PC), computing became accessible to large numbers of people. Networks for personal computers were developed that allow individual users to communicate with each other.
One significant computer network that has recently become popular is the Internet. The Internet grew out of this proliferation of computers and networks, and has evolved into a sophisticated worldwide network of computer systems. The Internet has been applied to enable a user, seeking information on this worldwide network, to switch from server to server and database to database; this application of the Internet is sometimes referred to as the worldwide web (WWW).
A user at an individual PC (i.e., workstation) that wishes to access the Internet typically does so using a software application known as a web browser that is loaded onto the workstation. A web browser makes a connection via the Internet to other computers known as web servers, and receives information from the web servers that is displayed on the user's workstation.
The Internet also enables geographically distant users to collaborate on an item of interest. For example, a project team may need to keep track of project status and individual progress, people with a common interest (e.g., film enthusiasts) may want to share and discuss their views on that topic, a customer support group may need a system to provide on-line answers to real-world customer problems, or several authors may wish to work on a document together. Today, several computer applications facilitate such collaboration.
In an Internet-based collaboration environment, the web browser submits requests to the web server whenever the user desires to obtain information from the web server. If the request involves transferring a file, for example, then the web server sends the file to the web browser. If the request requires running application programs on the web server that involve transaction processing, for example, then the web server invokes the application program necessary to complete the transaction and the application program responds by processing the transaction request. Transaction processing is a type of computer processing in which the computer responds immediately to user requests; each request is considered to be a transaction. The opposite of transaction processing is batch processing, in which a number of requests are stored and then executed all at one time. Transaction processing requires interaction with a user, whereas batch processing can take place without user involvement during processing.
When the application program invoked involves transaction processing, the web server invokes a dispatcher program, which is an application program that accepts the transaction, processes it, and returns a result to the user. In particular, the dispatcher analyzes the transaction request, loads the appropriate application program(s), executes the code of the application program(s), and ultimately generates a response that is transmitted back to the web browser for presentation. The dispatcher program is based, for example, on an interpreted programming language, that requires the availability of an interpreter for its execution.
An interpreter refers to a space in memory containing an interpreted language execution environment. An interpreted language execution environment contains the appropriate context that allows the interpreted language execution environment to process transactions. The context of the interpreted language execution environment, for example, includes variables, procedures of instructions, libraries, etc. Much of the execution performed when processing transactions entails executing high level commands that manipulate data contained in the transaction request message as well as utilities (e.g. databases) and application program procedures necessary to complete the transaction.
In known systems, for every transaction request received involving the execution of an application program, the dispatcher program performs the following: The dispatcher goes through an initialization and configuration procedure to establish an interpreted language execution environment (such as that formed to support commercially available interpreted programming languages, for example, the Tool Command Language--TCL) that will process the transaction. The dispatcher then forms a toolkit environment that includes a number of utilities and language extensions (e.g. databases) within which the application program will operate. The toolkit environment subsequently forms part of, and otherwise supports, the interpreted language execution environment. The dispatcher copies the required application program in its entirety to the interpreter. The dispatcher then executes the application program that is required to process the particular transaction request received by interpreting the instructions contained within that application program. Lastly, the dispatcher returns the result of the transaction to the web server for ultimate transmittal to the web browser.
Once the transaction is complete, the web server deletes the interpreted language execution environment formed to handle that transaction (including all of the parameters and procedures stored in memory relating to the particular transaction). The process that launched the dispatcher program is also terminated. This procedure is repeated for each transaction request received, requiring a "build-up and tear down" of the dispatcher for each instance of a transaction. The build-up or setup time, during which the interpreted language execution environment is established and the application program is loaded, can correspond to a relatively substantial part of the overall processing time for a transaction, particularly for transactions involving small applications.
Although the method implemented as just described was suitable for its intended purpose, the steady growth in the size and complexity of applications significantly increases the setup time for processing transactions, thereby degrading web server performance. In addition, as the number of Internet users continues to rapidly expand, it will become necessary for a web server to more efficiently process the correspondingly larger number of transaction requests received. A system and method for optimizing transaction processing by reducing the setup time across multiple transactions and, as a result, focusing computer resources on processing the transactions themselves is desirable.